HISTORY FILE FOR DOORFRAME VBDOS ================================ Version 1.0 ----------- (09-23-92) Fixed a bug when restoring the screen after Chat or Drop to DOS. It would generate an illegal function call whenever it hit a blinking character. (09-22-92) And still another version of DoorFrame for Visual Basic for MS-DOS! You now have the option of taking control after a carrier loss in case you need to do some clean-up before recycling back to the BBS. BE VERY CAREFUL with this one! Check the Docs under Miscellaneous Notes for an explanation. ============================================================================= The following history file is from the PDS (BASCOM) version of DoorFrame but the changes/additions still apply to the Visual Basic version. ============================================================================= HISTORY FILE FOR DOORFRAMEX (BASCOM 7.X) ======================================== Version 2.1 ----------- (09-20-92) Fixed a problem when using the new no-show option of In.Put. If you used a Dis.Play statement with color codes immediately after that, it would show the color codes rather than the color. (09-14-92) The In.Put command now features word-wrap ability! If you put, for example, 160 as the first parameter, it will wrap around at the nearest space when it reaches column 80 on the screen. Backspacing also works over the word-wrap. DoorFrame will now handle the 30-something line DOOR.SYS file as well as the 52-line one. Corrected some errors in writing the SFDOORS.DAT file. Specifically the COMPORT% and DAILY.BYTES.ALWD& variables. (09-13-92) Added 5 new parameters to the In.Put command. AutoCR% - Automatic Carriage Return. 0 = No, 1 = Yes Text$ - Text to display (if any). Xpos% - X coordinate to print Text$ Ypos% - Y coordinate to print Text$ Show% - 0 = Don't display response, 1 = display response For example: In.Put 5, 0, 11, 0, 0, "", 0, 0, 1 would accept 5 characters but would not return until the user hits the ENTER key. Conversely, In.Put 5, 0, 11, 0, 1, "Well? ", 20, 1, 1 would accept 5 characters and automatically return from the routine. It will also print 'Well? ' at location 20, 1 and the response would be displayed. If you wanted a Hot Key and didn't want the response to show: In.Put 1, 0, 11, 0, 1, "Y/N ", 20, 1, 0 would prompt for 'Y/N' but would not display the response. The variable Response$ will still contain whatever was typed even though it didn't show up on the screen. (09-11-92) Finally installed the screen restore when coming back from Chat or a Drop to Dos. Been wanting to do that for months now! It will now put the screen back like it was including anything typed at an In.Put prompt. If the caller had entered anything before the interruption, that is restored and he can pick up right where he left off! Version 2.0 ----------- (09-06-92) Had a request to be able to turn off the Status lines at the bottom of the screen so that has been installed. To blank out those 2 lines, set the variable No.Status% = 1 and do a ClrScrn. Sorry but those 2 lines are still not available for printing (that would mean changing half the routines in DoorFrame!). (09-05-92) Fixed an intermittent problem with the cursor jumping to the top left of the screen when backspacing. (09-04-92) Did some more code optimizing. The same door used below in v1.9 now compiles to 106,610 for an additional reduction of 6K in the .EXE! You should also notice a tremendous increase in the display speed. Using a test program that printed 18 lines and contained the color codes around each word, it took 30.92 seconds for v1.9 to finish. Version 2.0 did it in 8.95 seconds. That's a speed increase of over 345%! Added 2 new routines to the library. ClrMol clears in the middle of a line for the number of specified columns. ClrSol clears from the specified X, Y coordinates to the start of that line. (09-03-92) Re-paged the docs to a maximum of 60 lines per page for laser printers. Version 1.9 ----------- (08-27-92) Did some more optimizing of the code so your .EXE files should be a bit smaller than with v1.8. One of my doors compiled to 114,288 with v1.8 and 112,754 with v1.9, so it knocked almost 2K off the final .EXE! Fixed a problem which, in certain instances, would generate a 'Time Expired' message when the local display was toggled off (F9). (08-24-92) Added a bunch more routines from Hanlin's PBClone library. I'll leave you the fun of discovering which ones. Deleted the BIOSINKEY and KEYPRESS routines since they are local keyboard only routines. Version 1.8 ----------- (06-21-92) Added support for TriBBS software. DoorFrame both reads and writes the TRIBBS.SYS file. (06-15-92) Added a new Back.Space routine. Syntax is: Back.Space Row%, Col%, Num% Give it the row, column, and number of backspaces, the cursor will be positioned at the last backspace so if the Col% = 20 and Num% = 5, the cursor is left at column 16 (columns 20, 19, 18, 17, and 16 are erased). Version 1.7 ----------- (06-03-92) Fixed an oversight dealing with the TimeAdjust% variable. The problem wasn't with the variable itself but rather with the frequency of updating the Status line (which was every 30 seconds). Now it will update after each Dis.Play statement. So if you are adjusting the callers time right before leaving the door, just Dis.Play a space or something immediately after using TimeAdjust%. (05-24-92) Added the 'Last New Files Date' variable for those systems using Wildcat!'s USERINFO.DAT. The variable name is LastScan$ (05-20-92) Finally added a feature that has been sorely needed. You may now run your doors from the DOS command line. Syntax is MYDOOR LOCAL. DoorFrame will plug in enough dummy variables to enable it to run without using a BBS file. Since the .CFG file will not be opened when using LOCAL, you should bypass any access to the .CFG file. If you MUST read additional lines from the .CFG then I would suggest not using the LOCAL option. (05-12-92) Fixed a bug in the In.Put routine. Seems that the ASCII (or extended) SHIFT code for H, K, M, and P are the same as the scan codes for the arrows! So it was interpreting those 4 letters as arrow codes instead of the correct letter codes. The routine now checks the value of SysopKeys% to determine if it is a letter or an arrow. If SysopKeys% = 0, it's a letter, if SysopKeys% = 1, it's an arrow. This means you must only set SysopKeys% = 1 when you want to use the arrow keys since those 4 letters will also be interpreted as arrow keys. If you are expecting alphabetic input, you will get some strange results! (05-11-92) Thought I had fixed it so no beeps were heard on the local but not so. It is fixed now, fer sure, fer sure! (05-09-92) Learned what the Extra Time field was for in SFDOORS.DAT (thanks Chuck). Now if you utilize the TimeAdjust% variable, the Extra Time field in SFDOORS.DAT will be adjusted up or down accordingly. Found out that Wildcat! looks for an Error Level of 1 when recycling so DoorFrame now generates a DOS error level of 1 when running under Wildcat! systems and error level 62 for all others (for now!). (05-05-92) DoorFrame will now generate a DOS error level of 62. I understand that GAP systems can use this to correctly recycle the BBS whenever someone logs off from inside a door. Need some feedback on other systems please. Added a couple of needed variables that were omitted when writing the PCBoard USERS.SYS file. The descrepancy would only show up when logging off from within a door but the time used and last date on were not being updated. (05-02-92) Think I finally came up with a workable solution to get rid of the TIMER routines which drives a math coprocessor up the wall. The trade-off is that the status line will only be updated whenever input is required from the caller. Version 1.6 ----------- (04-29-92) Included with this version is the .BAS source for a door called DFDEMO. It demonstrates some of the features of DoorFrame. You may also want to use it to pick up some tips on using some of the routines. The EXINPUT.BAS and DISPLAY.BAS files have been removed. (04-27-92) Took me a whole day's work, but I dood it! You may now use the color codes as often as you wish when Dis.Playing a line. In addition the colors and blinking are each independent of each other, so you can blink one, some, all, or none! The % turns on the blinking for each set of codes. Added a parameter to the ClrScrn routine. You may now clear the local and remote screen in any background color you wish (0 - 7). Did a bit more optimizing of the code and even with the new stuff added, was able to reduce the size of .LIB by almost 3K! (04-24-92) In an effort to cut down on the number of variables we have to deal with (and hopefully cut down on memory requirements), I have combined the various system variables (Pcboard%, WildCat%, etc.) into one. System.File% will take their place. The value of System.File% will tell you which BBS file is being used according to the following values: 1 = PCBOARD.SYS 2 = USERS.SYS 3 = DOOR.SYS 4 = CALLINFO.BBS 5 = CHAIN.TXT 6 = DORINFOx.DEF 7 = SFDOORS.DAT 8 = USERINFO.DAT 9 = GTUSER.BBS Deleted the Num.Dl.Today% variable. Use DlToday& instead. (04-23-92) Have been receiving reports of an Error 6 (overflow) when using DoorFrame doors with the latest version of Spitfire. Have been trying to locate an actual SFDOORS.DAT file. Finally one of my users uploaded one to me (thanks Aldo!). Lo and behold in the Downloads Per Day field there was 54,730! So to stave off any more problems like this, I have changed the DlPerDay%, DlToday%, Downloads%, and Uploads% from INTEGER to LONG INTEGER. Used that extra space from the ON KEY and added support for GT Power's GTUSER.BBS file. The .CFG file for this one is a little different. Since the file doesn't provide the COM port or Node numbers, they must be added on lines 5 and 6 of the .CFG file. (04-22-92) Been reading how the ON KEY statement adds a lot of overhead to QB programs so have been researching how to get rid of them. Lo and behold, I found this neat little routine to do just that! So all the ON KEY (and the associated KEY statements) are gone. This change also knocked almost 2K off the size of the library. Version 1.5 ----------- (04-20-92) Added the PCBoard Language extension parameter, LANGUAGE$, at the request of one of our European users. (Thanks Peter!) This variable will contain the extension of the language file, i.e. .FRE for the French language. When using the default language (whichever one that is), this variable will contain 4 spaces. (04-17-92) Added two new parameters to the BOX.IT routine. HFG% and HBG% now let's you specify the foreground and background colors when using a Title$ on your boxes. Also added a check to see if Title$ is longer than the box. This would generate an Illegal Function error previously. Your Title$ must be at least 6 characters less than the width of the box. If it is longer than that, the routine simply ignores the Title$. Version 1.4 ----------- (04-10-92) Made some small changes in reading the PCBoard USERS file (nothing major). Noticed that the callers first name variable was missing from DOOR.SYS, USERINFO.DAT etc. so those have been added. (04-04-92) Fixed a small error in the SEND command when displaying an ASCII file. Seems it was reading from one file number and looking for the end of another which would either not display all the file or generate an INPUT PAST END error. (03-21-92) DoorFrame doors may now make use of the IRQ environment variable. For example, instead of DOOR DOOR.CFG /5 you can use DOOR DOOR.CFG /%IRQ% (03-19-92) DoorFrame is now aware of the PCBoard environment variables %PCBDRIVE% and %PCBDIR%. Although it is tranparent to you, the programmer, if it finds those two variables on the first line of the .CFG file it will substitute the correct drive and path. Also fixed a small bug with the time remaining when using USERS.SYS. Version 1.3 ----------- (03-07-92) Fixed a small problem with the high score bulletin. If the bulletin was in other than the current directory, the path for the graphics bulletin got screwed up. Added a new variable - Hi.Ascii% which allows you to accept ASCII values from 128 to 255. This was added at the request of one of our European users since some languages need to use those characters. Hi.Ascii% = 1 will enable this option. The default is zero (disabled). Version 1.2 ----------- (02-23-92) One more time on the SEND routine! I was checking the first few characters of a file for the CHR$(27) and if found just assumed that the file was all ANSI. Not so! Seems there are 'hand-made' files out there that have the color codes at the beginning of a line but no where else. So...... redid it one more time (hopefully the last!). (02-21-92) Optimized the code a bit and moved some routines from the main module to the library. Tested with just a two-line program and the size of the .EXE went from 83,034 before optimizing to 72,782 after optimizing. So that should cut down on your file sizes a bit! (02-17-92) NOTE: The parameters for the SEND routine have changed with this version! The new syntax is SEND FileName$, YN%, Clr% where Clr% is 0 (home cursor, do not clear screen) or 1 (yes, clear screen). Version 1.1 ----------- (02-14-92) Added a new routine, ClrEOL. This one will clear to the end of the line. You can specify where to start clearing. Example: ClrEOL 10, 10, 1 will do it's thing on row 10 and clear from column 10 to the end of the line and color it blue. The parameters are Xpos, Ypos, Color. Enjoy! Fixed a stupid mistake in the SEND routine. I open CONS: for printing to the local screen and misspelled it CON! Funny thing is, it worked except when accessing across a network! Added GetDView which returns the version of DESQview loaded or zeroes if DESQview is not loaded. (02-10-92) Think I finally got that pesky bug in the SEND routine when sending ANSI screens fixed! Tested it both local and remote here and it seems to work fine. Give it a good workout and let me know if it screws up. One quirk I found when using The Draw was when I saved the screen with ALT-S it didn't transmit quite right. But when the same screen was saved using ALT-B, the screen transmitted perfectly. Go figure! (02-09-92) Had some reports of the Backspace locking systems in local mode in the QuickBasic 4.5 version. Did some checking in the routine and the only thing I could find that could possibly be the culprit was an IF NOT LocalUsr% statement. Since I have had some problems with NOT in the past, I changed that statement to IF LocalUsr% = 0. Although I have not had any reports of the BASCOM version of DoorFrame locking systems, I made the change just to be sure. BTW, new BBS number and address with this version. Version 1.0 ----------- (10-25-91) Changed the second parameter on the IN.PUT routine from an integer to a single precision number. This allows you to specify a waiting time of less than 1 second. The minimum wait is now 1/18th of a second (.005 works pretty well). (10-21-91) Although DoorFrame has an extensive history in the QuickBasic 4.x environment, this is the initial release for BASCOM 7.x. The two libraries are identical expect for the following routines. FindFirstF GetDrv FindNextF GetExecPath GetNameF GetSub Exists% GetSub1 Exist2% RInstr SubExist Most of those routines are available in BASCOM and have become redundant. The HISTORY file for the Quickbasic 4.x version is included below since those changes/fixes/enhancements will usually apply to the BASCOM version. Also, there may be some things in here that I neglected to add to DFRAME.DOC. HISTORY FILE FOR DOORFRAME ========================== Version 2.4 ----------- (10-05-91) Fixed an oversight in writing the Wildcat! 3.x USERINFO.DAT. Line 16 (DoorLogoff$) will now show "Y" if the caller logged off from the Door. (09-08-91) You may now use the ARROW keys. DoorFrame now has an alternate set of keys for the Level and Time adjustments. To switch these keys from the ARROW keys to the alternate, use SysopKeys% = 1 AFTER you call INITIALIZE. When you have SysopKeys% set to 1, PgUp = add time, PgDn = subtract time, INSert = add level, and DELete = subtract level. SysopKeys% defaults to 0 so doors compiled with previous versions of DoorFrame will work as before. When SysopKeys% = 1 pressing one of the arrow keys will return the following in RESPONSE$: Up Arrow - RESPONSE$ = "UP" Dn Arrow - RESPONSE$ = "DOWN" Left Arrow - RESPONSE$ = "LEFT" Right Arrow - RESPONSE$ = "RIGHT" (09-06-91) Would you believe I left out the code for low-intensity white in the DIS.PLAY routine! It has been added. (Thanks to Jerry Claxton for finding that one!) Added the ability to use low intensity colors when using the symbols in the DIS.PLAY routine. To make a color low intensity just put a * in front of the first symbol. Ex: *}text} displays 'text' in low intensity white. (08-30-91) Changed the EXIT.DOOR "G" routine to allow logoffs on all systems, not just PCBoard. Changed the WildCat! 3.0 routines so that it DOES NOT automatically write the USERINFO.DAT file. If you wish to write this file, set User.Info = 1 before calling EXIT.DOOR. Version 2.3 ----------- (06-20-91) Added support for WildCat! v3.0. This version of WildCat! no longer uses the CALLINFO.BBS file. It now uses the 31-line version of DOOR.SYS and creates an additional file called USERINFO.DAT. (7-07-91) They finally woke up at Mustang! Software and are now using the standard 52-line DOOR.SYS like everyone else. This release adjusts for that. Just put the path to USERINFO.DAT on line 1 of the .CFG file (instead of DOOR.SYS). Make sure that DOOR.SYS is in the same directory as USERINFO.DAT! Version 2.2 ----------- (03-31-91) Added support for non-standard IRQ numbers (other than IRQ3/IRQ4). See the docs for info on how to implement this. Version 2.1 (03-23-91) ---------------------- Modified the LINES routine. Now if you draw intersecting vertical and horizontal lines, the appropriate character will be inserted where the lines cross. For example, at the intersection of two double lines the character Î would be printed. Tweaked the MORE routine a little. It was doing a CR/LF after the prompt so it wasn't getting erased because it was on the line above! Also put in logic in the MORE and ENTER routines to restore the cursor to it's position before the call. Fixed a problem in DORINFOx.DEF where the Sysop names where being taken from DORINFO instead of the configuration file. Also allowed for the fact that the RBBS DORINFO has 13 lines instead of 12. Still didn't have the DORINFOx.DEF quite right for RBBS. Hopefully it will work as it should now (helps when you use the correct LINE INPUT statement). One more time on DORINFO to fix the BBSSYS$. Also fixed a problem in picking up the correct node number. Version 2.0 (02-02-91) ---------------------- Fixed a problem with the backspace when the cursor was in columns 79 or 80 (it wouldn't). Enlarged the PRINT USING in the High Score Bulletin. It will now handle scores up to 9,999,999,999. Made DoorFrames internal error trapping available for those of you who wish to utilize it instead of writing your own. All Basic errors are trapped and will be written to DFRAME.ERR upon exiting the door. Added support for WWIV's CHAIN.TXT file. DoorFrame both reads and writes this file. It is untested as of this writing so watch it! Added 2 more parameters to the IN.PUT routine. These are INTEGERS and indicate the foreground and background colors for the input. Updated the CALLINFO.BBS routine to read the newer 36 line format. It will still handle the old 30 line format ok. Added a parameter to the SHOW.BLT routine. This is a STRING and is either "Y" or "N". The "Y" tells the routine to display the "Do you want to see the Bulletin" prompt while "N" will bypass the prompt. If you have an option on your door menu to view the bulletin, you would use "N" (why ask them again!). Version 1.9 (12-31-90) ---------------------- Fixed a bug when using the `, @, {, ^ etc. symbols. If one of these symbols was entered at an IN.PUT prompt, the program would go bananas. I had inadvertantly left out the ENTER prompt at the end of the SEND routine so when someone brought it to my attention I belated added it. Now I find that is the way some of you want it! So in order to satisfy both camps, I have added a parameter to SEND. The syntax is now: SEND (MSG$, YN%) where YN% is an INTEGER. 0 = don't send the ENTER prompt at the end, 1 = yes, use it. Added support for Spitfire's SFDOORS.DAT. DoorFrame both reads and writes to this file. Added the ability to log off from within the Door. However, this option is for PCBoard systems only! Added MAKE.BLT.CURRENT routine which posts current scores instead of the highest scores attained. Fixed a bug in the MAKE.BLT routines. It didn't take kindly to an extension being included in the Bulletin filename! AND THAT'S IT FOR THIS YEAR!! Version 1.8 (12-16-90) ---------------------- Added a few more subroutines for programmer convenience. These routines will add some capabilities not found in QuickBasic. Routines added are: DelFile, DrvSpace, GetDrv, GetExecPath, GetKbd, GetSub, NameCase, RInstr, SetError, SetKbd and SubExist. Fixed a problem with the ALLOWEDBYTES# variable (helps if you add it to the DFRAME.INC file!). Version 1.7 (12-13-90) ---------------------- Added support for PCBoard 14.5's USERS.SYS file! Since the bug reports had started slacking off, thought I would introduce a few more 8-). Added option for no border (spaces) in the BOX.IT routine. Forgot to add an ENTER prompt after the last page in the SEND routine. Fixed now. Had some reports of Security Levels higher than 32,767 so the LEVEL variable has been changed from an INTEGER (%) to a LONG (&). Took the Time Left warnings out. They only messed up the screen! So if you want to warn the caller when time gets low, you should check the TIMELEFT% variable and display a message accordingly. Version 1.6 (12-11-90) ---------------------- Fixed a problem in the error handling routines. It will hopefully handle errors better now and exit gracefully. Fixed the 'keyboard timeout' problem when coming out of Chat mode. Fixed another Chat mode problem where the lines on the remote screen would overwrite when it reached line 23. Optimized the library a bit. Cut about 13K off the size of the .LIB. Added a check for DOS version. If the DOS version is less than 3.0 it will display an error message and exit (DOS 3.0+ is required because the files are opened in SHARED mode). Version 1.5 (11-30-90) ---------------------- Finally got the midnight time problem fixed where the caller would get a time expired message if he had logged on the BBS before midnight and entered the door after midnight. Fixed an error when using DORINFOx.DEF. It worked fine as long as DORINFOx.DEF was the only thing there but went screwy if you threw a path at it. When I added the options for color in the middle of a line of text, I inadvertantly disabled the full-line blink. Now fixed. Version 1.4 (11-25-90) ---------------------- Added some enhancements to the DIS.PLAY routine. By using special symbols, selected text can be displayed in different colors (like BLUE, YELLOW, BLUE) without having to use 3 DIS.PLAY statements. See the DOCS and DISPLAY.BAS for a complete explanation. Added the MODE% variable. Previously if you used DETECT.ANSI, the caller would be switched to COLOR MODE automatically. With the MODE% variable, the color will be on or off depending on the caller's BBS setting. Modified the IN.PUT routine somewhat. It now requires 2 parameters to be passed. The first parameter is the desired length of the input and the second is the length of time to wait for that input. Version 1.3 (11-20-90) ---------------------- Added a time limit option to the IN.PUT routine. See EXINPUT.BAS for and example on using it. Fixed an 'oversight' in the OUT.PUT routine. Completely left out updating the column position! Made a correction in the centering routine. Now when you use centering with a colored background, you don't get the colored line all the way across the screen! Also, if you do an IN.PUT after a center it will be properly positioned after the prompt instead of on the right edge. Version 1.2 (11-17-90) ---------------------- Made the Keyboard Timeout configurable by the programmer. Before calling INITIALIZE, populate TIMEOUT% with the number of seconds you want for input. If you do not specify a TIMEOUT%, it will default to 5 minutes. The minimum is 60 secs so anything less than that will be the default. Added support for DORINFOx.DEF which now gives us QBBS, RBBS, and Remote Access! (Note: This needs to be tested more. Any volunteers?) Version 1.1 (11-12-90) ---------------------- Fixed a problem with the cursor positioning routines when the local display was toggled off (it didn't work!). Changed the BOX subroutine to BOX.IT to avoid a naming conflict with other add-on packages for QB 4.5. (Crescent Software's for one). Added support for CALLINFO.BBS so your doors will now run on Wildcat! systems without a converter! Version 1.0 (11-1-90) --------------------- Initialize release.